package cn.edu.ujn.springboot.controller;

import cn.edu.ujn.dao.Login;
import cn.edu.ujn.service.ILoginService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@RestController
@CrossOrigin
public class LoginController {
    @Autowired
    private ILoginService loginService;

    @PostMapping("/login")
    @ResponseBody
    public Login login(@RequestBody Login loginRequest){
        String username = loginRequest.getUsername();
        String password = loginRequest.getPassword();
        System.out.println("username: " + username + " password: " + password);
        Login user = loginService.login(username, password);
        if(user == null){
            throw new RuntimeException("用户名或密码错误!");
        }
        return user;
    }
    // 用户注册
    @PostMapping("/register") // 映射到 /users/register
    public String register(@RequestBody Login loginRequest) {
        String username = loginRequest.getUsername();

        // 检查用户名是否已存在
        if (loginService.isUsernameTaken(username)) {
            return "用户名已存在，请选择其他用户名!";
        }
        int result = loginService.addUser(loginRequest);
        return result > 0 ? "用户注册成功!" : "用户注册失败!";
    }

    // 修改用户信息
    @PutMapping("/user/{userId}") // 映射到 /users/{userId}
    public String modifyUser(@PathVariable Long userId, @RequestBody Login loginRequest) {
        loginRequest.setUserId(userId); // 设置用户ID
        int result = loginService.updateUser(loginRequest);
        return result > 0 ? "用户信息修改成功!" : "用户信息修改失败!";
    }

    // 删除用户
    @DeleteMapping("/user/{userId}") // 映射到 /users/{userId}
    public String removeUser(@PathVariable int userId) {
        int result = loginService.deleteUser(userId);
        return result > 0 ? "用户删除成功!" : "用户删除失败!";
    }

    // 获取用户信息
    @GetMapping("/user/{userId}") // 映射到 /users/{userId}
    public Login getUserById(@PathVariable String userId) {
        try {
            // 尝试将 userId 转换为整数
            int id = Integer.parseInt(userId);
            return loginService.getUserById(id); // 正常执行
        } catch (NumberFormatException ex) {
            // 捕获非法数字格式异常
            return null;
        }
    }

    // 获取所有用户
    @GetMapping("/user/all")
    public List<Login> getAllUsers() {
        return loginService.getAllUsers();
    }
}
